Methods and systems of providing information to computer users

ABSTRACT

Methods and systems of providing information to computer users are described. In one embodiment, the methods and systems can provide a ranked list of favorite links. The list can be based upon the recency and frequency with which a user accesses items associated with the links. A most recently added favorites list of links is provided that is based upon when particular links were added to a user&#39;s favorites list. The methods and system can calculate a union of the lists to provide a collection of favorite quick links.

RELATED APPLICATIONS

This application is a continuation of and claims priority to U.S. patentapplication Ser. No. 11/234,767, filed on Sep. 23, 2005, the disclosureof which is incorporated by reference herein.

The following patent applications are related to the presentapplication, are assigned to the assignee of this patent application,and are expressly incorporated by reference herein: U.S. patentapplication Ser. No. 09/599,806, entitled “Method and systems ofproviding information to computer users”; U.S. patent application Ser.No. 09/599,298, entitled “Single Window Navigation Methods and Systems”;U.S. patent application Ser. No. 09/599,299, entitled “Methods, Systems,Architectures and Data Structures For Delivering Software via aNetwork”; U.S. patent application Ser. No. 09/599,048, entitled“Network-based Software Extensions”; U.S. patent application Ser. No.09/599,813, entitled “Authoring Arbitrary XML Documents using DHTML andXSLT”; U.S. patent application Ser. No. 09/599,812, entitled“Architectures For And Methods Of Providing Network-based SoftwareExtensions”; and U.S. patent application Ser. No. 09/599,086, entitled“Task Sensitive Methods And Systems For Displaying Command Sets”.

DESCRIPTION Technical Field

This invention pertains to computerized methods and systems forproviding information to computer users. More particularly, theinvention concerns methods and systems for providing links touser-specific information.

BACKGROUND

As computing evolves, there is a growing demand to make the user'scomputing experience much more user-centric, or tailored to theparticular user. Consider, for example, web browsers. Web browsers areapplication programs that execute on a user's computer and enable a userto navigate the web and search for content, typically in the form of webpages that are displayed on their computer. To make the user's webbrowsing experience more user-centric, most web browsers include what isknown as a “add favorite” function in which a user can add particularweb sites to a “favorites” list. When a user adds a web site or web pageto their favorites list (in the form of a link), they physically createan entry in a database that maintains a URL (i.e. universal resourcelocator) associated with the web site or page. Anytime a user wishes toreturn to one of these web sites or pages, they simply pull up their“favorites” list, click on the appropriate link, and their web browserobtains and displays a web page that corresponds to the link.

Another way that web browsers attempt to create a user-centricexperience is by keeping track of a very limited amount of so-called“history data” pertaining to the user's historical browsing activities.History data might include the last three web sites that were browsed bythe user. The user can typically view this information by clicking on afeature that provides a drop down menu that lists links to the browsedsites. For example, on the web browser's navigation bar, there istypically a “back” and “forward” button that can be clicked by the userto navigate backward or forward among entries that are maintained in anavigation stack that keeps track of the user's browsing activities. The“back” and “forward” buttons can also have drop down menus associatedwith them that enable the user to display a drop down menu that mightinclude links for the last three sites that the user encountered. Byselecting one of these links, the user's browser displays thecorresponding web page.

While these solutions provide a very basic user-centric functionality,they fall far short of providing a versatile, intelligently flexible anddynamic system. For example, many of these systems require the user toinitiate or take some action in order for particular links to appear(i.e. the user necessarily must add a link to their favorites list). Inaddition, many of these systems are unintelligent in the way that theypresent information or links to the user. For example, a favorites listmay have a large number of links that have been added by the user. Whena user attempts to find a link to a favorite web site, their browserwill typically present them with all of the links that are in theirfavorites list. It is then up to the user to find the appropriate linkso that they can select it.

Another challenge in the general area of information use is that whichis posed by the move toward context-aware computing systems.Context-aware computing systems are those systems that provide servicesto a user based upon their context. In the future, informationprocessing systems are going to have to be sensitive to the user'sdesire to accomplish tasks in context-aware systems. For example, it maybe desirable to provide services to a user without requiring the user tochange their context in order to consume the services. As an example,consider the following scenario. A user is working in a word processingapplication on a particular document of interest. The document isprovided by an application program that is executing on the user'scomputer and that displays the document in a window that is defined bythe program. Consider now that the user receives four or five emailmessages during the course of working on the document. In order to viewindicia of these email messages (i.e. the “From” and “Subject” fields),in today's computing environment, the user is typically required to pullup their email application program which separately displays a differentwindow that includes the indicia that the user wishes to view. This is a“modal” operation in that the user is required to temporarily quitworking on their document in the word processing application program sothat they can view information provided by the email applicationprogram. Thus, the user is undesirably required to change their context.

This invention arose out of concerns associated with improving methodsand systems that provide information to computer users.

SUMMARY

Methods and systems of providing information to computer users aredescribed. In one embodiment, the methods and systems can provide aranked list of favorite links. The list can be based upon the recencyand frequency with which a user accesses items associated with thelinks. A most recently added favorites list of links is provided that isbased upon when particular links were added to a user's favorites list.The methods and system can calculate a union of the lists to provide acollection of favorite quick links.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of an exemplary computer system that can beused to implement various described embodiments.

FIG. 2 is a diagram of an exemplary user interface that can be providedin accordance with one described embodiment.

FIG. 3 is a flow diagram that describes steps in a method in accordancewith one described embodiment.

FIG. 4 is a diagram of an exemplary user interface in accordance withone specific implementation.

FIG. 5 is a diagram of an exemplary user interface in accordance withone specific implementation.

FIG. 6 is a diagram of an exemplary user interface in accordance withone specific implementation.

FIG. 7 is a flow diagram that describes steps in a method in accordancewith one described embodiment.

FIG. 8 is a diagram of an exemplary user favorites interface.

FIG. 9 is a flow diagram that describes steps in a method in accordancewith one described embodiment.

FIG. 10 is a diagram that describes a portion of a database inaccordance with one described embodiment.

FIG. 11 is a flow diagram that describes steps in a method in accordancewith one described embodiment.

FIG. 12 is a flow diagram that describes steps in a method in accordancewith one described embodiment.

FIG. 13 is a diagram that illustrates the concept of a “Recent ItemsList.”

FIG. 14 is a diagram that illustrates an exemplary implementation of the“Recent Items List.”

DETAILED DESCRIPTION

Overview

In various embodiments described just below, novel methods and systemsprovide so-called browsable “quick links” to user-related data. Thequick links can be advantageously deployed in a manner in which the usercan browse the quick links without having to change or modify theircurrent computing context. The quick links can be provided acrossmultiple different content types, e.g. document types. Thus, a user can,in some instances, view quick links associated with different contenttypes without having to change their current computing context, i.e.without having to change a document of a particular content type inwhich they happen to be working.

In one particularly advantageous embodiment, multiple differentfunctionalities can be provided by a single application program. Themultiple different functionalities enable a user to accomplish multipledifferent tasks within the context of a single application program. Thissingle application program might, for example, provide multipledocument-centric functionalities, e.g. an email functionality, wordprocessing functionality, and web browser functionality. In thisexample, a user working within the web browser functionality can viewquick links associated with the email functionality without having tochange their web browsing context. A user is then able to select a linkto automatically navigate to a particular document that is associatedwith that link.

Another aspect of some of the described embodiments includes an abilityto build the quick links using dynamically-changing information that isnot necessarily information that is demanded by the user. That is, inmany systems, information will be received that pertains to a particularuser. For example, in a single application program that includes anemail functionality, a user may, over the course of browsing web sites,receive one or more email messages. These email messages constitutedynamically-changing information which, in this example, is not relatedto any actions that the user is taking. Nonetheless, quick links to theemail messages can be advantageously displayed for the user while theyare in the context of their web browsing activities.

Other embodiments provide intelligent browsing algorithms that aredirected to displaying quick links that are very likely to be ofinterest to a user. These intelligent browsing algorithms can beadvantageously deployed in connection with multiple content-type systemsso that the algorithms are adaptable to and address the differentcontent types.

Thus, the described embodiments provide very powerful methods andsystems that greatly enhance the user's computing experience by, amongother things, specifically tailoring the user's computing experience totheir particular context. Flexibility is enhanced by providing, in someinstances, systems that are configured to work within acontext-sensitive computing environment that contains multiple differentfunctionalities that are selectable for use by a user.

Exemplary Computer System

FIG. 1 shows an exemplary computer system that can be used to implementthe embodiments described herein. Other computer systems can, however,be used. Computer 130 includes one or more processors or processingunits 132, a system memory 134, and a bus 136 that couples varioussystem components including the system memory 134 to processors 132. Thebus 136 represents one or more of any of several types of busstructures, including a memory bus or memory controller, a peripheralbus, an accelerated graphics port, and a processor or local bus usingany of a variety of bus architectures. The system memory 134 includesread only memory (ROM) 138 and random access memory (RAM) 140. A basicinput/output system (BIOS) 142, containing the basic routines that helpto transfer information between elements within computer 130, such asduring start-up, is stored in ROM 138.

Computer 130 further includes a hard disk drive 144 for reading from andwriting to a hard disk (not shown), a magnetic disk drive 146 forreading from and writing to a removable magnetic disk 148, and anoptical disk drive 150 for reading from or writing to a removableoptical disk 152 such as a CD ROM or other optical media. The hard diskdrive 144, magnetic disk drive 146, and optical disk drive 150 areconnected to the bus 136 by an SCSI interface 154 or some otherappropriate interface. The drives and their associated computer-readablemedia provide nonvolatile storage of computer-readable instructions,data 11 structures, program modules and other data for computer 130.Although the exemplary environment described herein employs a hard disk,a removable magnetic disk 148 and a removable optical disk 152, itshould be appreciated by those skilled in the art that other types ofcomputer-readable media which can store data that is accessible by acomputer, such as magnetic cassettes, flash memory cards, digital videodisks, random access memories (RAMs), read only memories (ROMs), and thelike, may also be used in the exemplary operating environment.

A number of program modules may be stored on the hard disk 144, magneticdisk 148, optical disk 152, ROM 138, or RAM 140, including an operatingsystem 158, one or more application programs 160, other program modules162, and program data 164. A user may enter commands and informationinto computer 130 through input devices such as a keyboard 166 and apointing device 168. Other input devices (not shown) may include amicrophone, joystick, game pad, satellite dish, scanner, or the like.These and other input devices are connected to the processing unit 132through an interface 170 that is coupled to the bus 136. A monitor 172or other type of display device is also connected to the bus 136 via aninterface, such as a video adapter 174. In addition to the monitor,personal computers typically include other peripheral output devices(not shown) such as speakers and printers.

Computer 130 commonly operates in a networked environment using logicalconnections to one or more remote computers, such as a remote computer176. The remote computer 176 may be another personal computer, a server,a router, a network PC, a peer device or other common network node, andtypically includes many or all of the elements described above relativeto computer 130, although only a memory storage device 178 has beenillustrated in FIG. 1. The logical connections depicted in FIG. 1include a local area network (LAN) 180 and a wide area network (WAN)182. Such networking environments are commonplace in offices,enterprise-wide computer networks, intranets, and the Internet.

When used in a LAN networking environment, computer 130 is connected tothe local network 180 through a network interface or adapter 184. Whenused in a WAN networking environment, computer 130 typically includes amodem 186 or other means for establishing communications over the widearea network 182, such as the Internet. The modem 186, which may beinternal or external, is connected to the bus 136 via a serial portinterface 156. In a networked environment, program modules depictedrelative to the personal computer 130, or portions thereof, may bestored in the remote memory storage device. It will be appreciated thatthe network connections shown are exemplary and other means ofestablishing a communications link between the computers may be used.

Generally, the data processors of computer 130 are programmed by meansof instructions stored at different times in the variouscomputer-readable storage media of the computer. Programs and operatingsystems are typically distributed, for example, on floppy disks orCD-ROMs. From there, they are installed or loaded into the secondarymemory of a computer. At execution, they are loaded at least partiallyinto the computer's primary electronic memory. The invention describedherein includes these and other various types of computer-readablestorage media when such media contain instructions or programs forimplementing the steps described below in conjunction with amicroprocessor or other data processor. The invention also includes thecomputer itself when programmed according to the methods and techniquesdescribed below.

For purposes of illustration, programs and other executable programcomponents such as the operating system are illustrated herein asdiscrete blocks, although it is recognized that such programs andcomponents reside at various times in different storage components ofthe computer, and are executed by the data processor(s) of the computer.

Viewable Links Across Multiple Content Types

In one embodiment, software provides various quick links that areviewable by a user without changing their current computing context. Thequick links can advantageously pertain to another context that isdifferent from a context in which the user is currently computing. Forpurposes of this document, a “context” can be considered as afunctionality that enables a user to complete a particular computingtask. Exemplary contexts include, without limitation, word processingcontexts, browsing contexts, email contexts and the like. Thus, while auser is in one particular context, they have the ability to view quicklinks that pertain to another different context without changing theircurrent computing context.

As an example, consider the following. A user is currently working on adocument in a word processor. During the course of working on thedocument, the user receives an email message from a friend. In the past,the user would have to temporarily stop their current computing context,e.g. by exiting or pausing a word processing window, and pulling up anemail window to view indicia of the email message (i.e. the “From” and“Subject” fields). In accordance with this example, a user can viewquick link that are associated with the different context withoutchanging their current context. In this specific case, the user can viewlinks that are associated with the email message (e.g. the “From” and“Subject” fields) without exiting the word processing window or changingtheir word processing context.

FIG. 2 shows but one exemplary user interface 200 that can be providedin accordance with this example. The user interface is implemented insoftware that is executable on a user's computing device, e.g. apersonal computer, although any computing device can suffice. Interface200 includes, in this example, a tool bar 202 and a display area 204.Display area 204 can be used by the user to engage in tasks associatedwith a first context and, in this example, is designated “FirstContextual Display.” Exemplary tasks can be any suitable tasks in whicha computer can engage. Exemplary non-limiting tasks were mentionedabove. Tool bar 202 includes, in this example, user-engagable indicia206 that can enable a user to view quick links that are associated withone or more contexts that are different from the first context and eachother. In this example, the indicia comprises one or more drop downmenus 206. Each drop down menu can be associated with a differentcontext, i.e. different task, in which a user can engage. In thisparticular example, and for the sake of brevity, only one indicia ordrop down menu is shown.

In operation, a user who is working within a particular context indisplay area 204 may desire to view links associated with a differentcontext. In this case, the user simply clicks on the drop down menu 206to automatically view one or more quick links that are associated with adifferent context. When the user clicks on the menu 206, their contextwithin the display area does not change. That is, they are able to viewthe quick link or links associated with the different context orcontexts, without having to change their own context. To this extent,the display of the quick links associated with the other context is donein a modeless fashion. That is, when the user displays the quick links,they are not required to temporarily leave their current context. Theymay continue working within or at least view their current context inthe display area 204 while the quick links are displayed.

As an example, consider again the user who is working in a wordprocessor on a particular document and receives an email message from afriend. Instead of having to leave the current document displayed indisplay area 204, the user simply clicks on the menu 206 to view of listof quick links that correspond to the email messages that the user hasreceived. In this way, the user can check their list of email messages(or view links that pertain to one context) while working in acompletely different context. The user can then click on a quick link tobe navigated to the new context which, in this case, is the emailmessage.

FIG. 3 is a flow diagram that describes steps in a method in accordancewith the described embodiment. The illustrated method can be implementedin any suitable hardware, software, firmware, or combination thereof. Inthe illustrated example, the method is implemented in software.

Step 300 receives information that pertains to different user contexts.This information can comprise any information that can be associatedwith any number of different user contexts. Advantageously, theinformation can comprise dynamically changing information. For example,the information can comprise “incoming” information that is received bythe user's computer while the user is working within one context (e.g.receiving an email message while working in a word processing document).Such information can also comprise information that is or is notgenerated by the user themselves. The information can also comprisetime-sensitive information (e.g. calendar appointments for a particularday or time frame), in which case the information would appear when theappointments start in the immediate future. Further, the information cancomprise information concerning content that the user is working withand information about the content's use. Step 302 presents a display onthe user's computer that pertains to a first user context. The displaycan be any suitable display with which the user can interact toaccomplish a task. Step 304 presents user-engagable indicia that enablesa user to access quick links associated with one or more contexts thatare different from the first context. The links can be associated withthe information that is received at step 300. Any suitableuser-engagable indicia can be presented. In the example given above, theindicia is displayed in the form of a drop down menu. Step 306 displaysquick links that are associated with the different contexts responsiveto a user engaging the user-engagable indicia. In the above example,this step can be implemented when the user clicks on the drop down menuthat is associated with the different contexts. Advantageously, steps304 and 306 are implemented without changing the user's presentcomputing context. So, in the above example, this step is implemented bydisplaying quick links to the user's incoming email messages withoutrequiring the user to change their word processing context.

Exemplary Implementation

In accordance with one specific implementation, software provides a userinterface (UI) that presents a user with a single navigable window thatcan be navigated between multiple different functionalities by a user.The single navigable window and different functionalities areadvantageously provided by a single application program which greatlyfacilitates integration of the different functionalities. The singlenavigable window contains user-engagable indicia that enables a user toview quick links that are associated with different functionalities,without having to change their current context or functionality. Anexemplary single navigable window application is described in the U.S.patent application entitled “Single Window Navigation Methods andSystems”, incorporated by reference above.

In the exemplary single navigable window application, a user, throughthe use of various navigation instrumentalities, can navigate betweenthe functionalities and when doing so, the single window presents one ofthese functionalities. When this one functionality is presented to theuser, the user is able, through the use of the user-engagable indicia,to view quick links associated with one or more of the otherfunctionalities. In this particular implementation, one navigationinstrumentality is provided in the form of a web browser-like navigationtool. The choice of a web browser-like navigation tool follows fromconcerns that navigation instrumentalities be of a type that is readilyunderstood by most individuals familiar with computing environments.Thus, when a user first encounters the inventive navigable single windowconcept for the first time, they do not have to learn an unfamiliarnavigation concept. Another navigation instrumentality includes links toeach of the multiple different functionalities. These links aredifferent from the quick links and can be clicked on by a user toautomatically navigate the single navigable window to a selectedfunctionality. Once the user has navigated the single window to aparticular functionality, they can set about accomplishing a task withinthe functionality. One or more of the application links includes theuser-engagable indicia that, in turn, displays the quick links to theassociated functionality.

FIG. 4 shows but one exemplary user interface (UI) 400 in accordancewith this specific implementation. It will be appreciated that other UIscould be used to implement the inventive concepts described herein andthat the illustrated UI constitutes but one way of doing so. In theillustrated example, UI 400 includes a navigation bar 402, one or morecommand areas 404, and a display or document area 406 that constitutesthe single navigable window.

Navigation bar 402 is located adjacent the top of display area 406 andcontains browser-like navigation buttons 408 in the form of a “backward”button, a “forward” button, a “stop” button and the like. The navigationbar can be located anywhere on the UI. Its illustrated placement,however, is similar in appearance to the placement of traditional webbrowsing navigation features. In addition to the navigation buttons 408,the navigation bar 402 also includes one or more links 410 to thedifferent functionalities that are provided by the single applicationprogram and which can be accessed by the user. Individual links 410 haveuser-engagable indicia 411 associated with them that enable a user toview quick links that are associated with the functionality. In theillustrated example, links to three exemplary functionalities (i.e.functionality 1, functionality 2, and functionality 3) are shown andeach has its own user-engagable indicia 411. It is possible, however,for less than all of the functionalities to have user-engagable indiciaThese functionalities are typically different functionalities that canenable a user to complete different respective tasks. Examples ofdifferent tasks are given below in more detail. In this example, thesefunctionalities are advantageously all provided within the context of asingle application.

In operation, to access a particular functionality, a user simply clickson one 11 of the links 410 and a display that pertains to the selectedfunctionality is immediately presented in the single window display area406. To view quick links that are associated with a particularfunctionality that is the same as or different from one in which theuser is currently working, the user simply clicks on the correspondinguser-engagable indicia 411 to see a drop down menu containing the quicklinks. Thus, while working within functionality 1, for example, the usercould click on the user-engagable indicia 411 associated with any offunctionalities 1, 2 and 3 to see their associated quick links. Byclicking further on any of the quick links, the user can automaticallynavigate the single window to that particular link. As the usernavigates from link to link or from functionality to functionality,their navigation activities are managed by a software-implementednavigation model that is described in a section entitled “NavigationModel” below.

Command areas 404 are located adjacent the top and left side of thedisplay area 406. The command area(s) can, however, be located in anysuitable location. The command areas provide commands that are bothglobal in nature and specific to the particular context the user hasselected. For example, some commands such as “search” and “help” mightbe considered as global in nature since they can find use in manycontexts. Other commands, such as “text bold” or “forward” are morespecific to the particular context that the user has selected. For the“text bold” command, the user's context may likely be a word processingcontext, while the “forward” command may likely be employed in an emailcontext. The concept of context-sensitive command structures aredescribed in more detail in the U.S. patent application entitled “TaskSensitive Methods And Systems For Displaying Command Sets”, incorporatedby reference above.

Briefly, however, context-sensitive command structures include commandsets having one or more individual commands are automatically presentedto a user depending on the user's context. Specifically, depending onthe type of action the user has taken within display area 406, commandsthat are specific to that action will appear automatically thusobviating the need for the user to hunt through a menu structure to findcommands of interest. This improves upon past approaches which alwayspresented top level commands, even when they were not needed by theuser. This is also advantageous from the standpoint of assisting userswho are unfamiliar with a particular software application. In the past,these users would have to hunt through an unfamiliar menu structure tofind commands that may or may not be pertinent to an action that theuser desired to take. In the present case, contextually-appropriatecommands are automatically presented in an interface so that a user neednot worry about finding appropriate commands.

In the present example, a context-sensitive command structure in theform of a context block can be presented to the user. The context blockcan advantageously contain multiple algorithms from which the user canselect to see different collections of links that pertain to theparticular functionality in which they are currently working or one ormore of the functionalities in which they are not currently working. Thealgorithms are designed to intelligently present links that are verylikely to be of interest to the user. Exemplary algorithms are describedin more detail in the “Exemplary Algorithms” section below.

EXAMPLE

As an example of the single navigable window provided by a singleapplication consider FIGS. 5 and 6.

In this example, the multiple functionalities 410 that can be navigatedby a user include a browser functionality (indicated by the home icon),a mail functionality (indicated by the letter icon), a plannerfunctionality (indicated by the clock icon), a contacts functionality(indicated by the people icon), a documents functionality (indicated bythe folder icon), and a links functionality (indicated by the worldicon). These illustrated functionalities are so-called“document-centric” functionalities because they are defined around atype of document that a user interacts with, e.g. a Web page document,an email document, a calendar document, etc. Each of the links 410 tothe functionalities has an associated user-19 engagable indicia 411 inthe form of a drop down menu that shows quick links to the variousfunctionalities.

FIG. 5 shows an example of a display that is rendered in the displayarea 406 when a user clicks on the link to the browser functionality. Byclicking on the link (i.e. the home icon) to the browser functionality,single application program software executing on the user's computerexecutes to implement a browser functionality. In this example, thebrowser functionality displays the user's home page in display area 406.Notice also that navigation buttons 408 are provided for navigationwithin the current and between the different selectable functionalities.The command areas 404 contain command sets that include commands thatare specific to the context that the user has selected. In this example,the user's context is a browsing context. Accordingly, the leftmostcommand area contains commands that are specific to the browsingfunctionality. Such commands include ones that a user would normallyexpect to find in a web browser. In addition, the leftmost command area404 shows a context block 412 labeled “Favorites” that includes a dropdown menu that can enable a user to select between multiple differentalgorithms that intelligently present links associated 11 with theircurrent context. In this example, context block 412 indicates that theuser has selected a “Top Favorites” algorithm that lists their topfavorite web sites. An exemplary “Top Favorites” algorithm is describedbelow in the “Exemplary Algorithms” section.

Notice also that the command area 404 adjacent the top of display area406 also contains commands that are specific to the browsing context,i.e. “Add to Favorites” and an address well in which the user can type aURL of a particular destination web site.

FIG. 6 shows an example of a display that is rendered in the displayarea 406 when the user clicks on the link to the mail functionality(i.e. the folder icon). By clicking on this link, single applicationprogram software executing on the user's computer executes to implementthe mail functionality. In this example, the mail functionality displaysa user's in box with messages that have been received by the user.Notice that the leftmost command area has been minimized by the user andthat the command area adjacent the top of the display area 406 containscommands that are specific to the user's current context, e.g. “New” forgenerating a new email message, “Reply” for replying to an emailmessage, “Reply to All” for replying to all recipients of an emailmessage and the like.

Likewise, although not specifically illustrated, the user could havedisplays for the planner, contacts, documents, and links functionalitiespresented in the display area 406 by simply clicking on the links tothese specific functionalities. The navigation bar 408 provides the userwith the ability to navigate through these different functionalities ina browser-like manner.

It is important to note that the above example constitutes but oneexemplary way in which multiple different functionalities and associatedquick links can be presented to a user within the construct of anavigable structure. It should be understood that the specificallyillustrated functionalities (i.e. browser, mail, planner etc.)constitute specific examples of different functionalities that arecapable of being incorporated into the single application program thatprovides the navigable window and should in no way limit the scope ofthe claimed subject matter to only the specifically illustrated anddescribed functionalities. Accordingly, other different functionalitiesand associated quick links can be employed.

FIG. 7 is a flow diagram that describes steps in a method in accordancewith this described embodiment. The illustrated method can beimplemented in any suitable hardware, software, firmware, or combinationthereof. In the illustrated example, the method is implemented insoftware.

Step 700 provides a single application program with multiple differentfunctionalities. The functionalities, as pointed out above, areadvantageously different so as to enable a user to accomplish differenttasks. One specific non-limiting example of different functionalitieswas given above in the context of document-centric functionalities thatenable a user to make use of browser, mail, planner, contacts,documents, and links functionalities. Step 700 can be implemented byconfiguring a computing device, such as a user's computer, with thesingle application program having the multiple differentfunctionalities. This step can also be implemented by providing asoftware platform in the form of a generic single application shell thatis extensible and adaptable to receive different extensions or softwaremodules that embody various different functionalities as described inthe U.S. patent applications entitled “Single Window Navigation Methodsand Systems”, “Methods, Systems, Architectures and Data Structures ForDelivering Software via a Network”, and “Network-based SoftwareExtensions” incorporated by reference above. These different extensionsare then presented to the user in the context of the single applicationhaving the multiple different functionalities.

These extensions can be delivered to the platform in any suitable wayand through any suitable delivery mechanism. For example, one way ofdelivering the various extensions or functionalities is to deliver themvia a network such as an Intranet or the Internet. Regardless of themanner in which the single application is provided, step 702 presents auser interface (UI) with a single window, links to the multipledifferent functionalities, and user-engagable indicia associated withone or more of the links. The user-engagable indicia, as describedabove, enables a user to access quick links associated with one or moreof the functionalities. The UI can also advantageously includenavigation instrumentalities that enable a user to navigate between thedifferent functionalities in a browser-like manner. FIGS. 4-6 givespecific examples of an exemplary UT that can be used in accordance withthe described embodiment. Step 704 ascertains whether a user has engagedany of the user-engagable indicia for displaying the quick links. If theuser has not engaged any of the user-engagable indicia, then step 705does not display any of the quick links The user-engagable indicia canbe continually displayed so that a user is free to select one. If theuser has engaged any of the user-engagable indicia (e.g. by clicking ona drop down menu 411 associated with one or more of thefunctionalities), then step 706 displays the quick links that areassociated with the user-engagable indicia. Step 708 ascertains whetherthe user has selected a particular quick link from the displayed quicklinks. If the user has not, then step 710 can remove the display ofquick links and branches back to step 704. This step can be implementedautomatically (e.g. by removing the quick links display after adeterminable amount of time) or manually (by enabling the user to closethe quick links display through some predefined action). If the user hasselected a particular quick link, then step 712 navigates the singlewindow to the selected quick link and displays a document associatedwith the quick link for the user. Step 712 then returns to step 704. Itwill be appreciated that step 706 can also remove quick links that aredisplayed responsive to a user engaging the user-engagable indicia.

Hence, in this example, multiple different functionalities are providedby a single application program that provides a single navigable windowthat can be navigated among the different functionalites. This permits auser to accomplish different tasks without having to pull up and managemultiple windows. All of the functionalities, in this example, areprovided within the single window as desired by the user. To assist theuser in operating within the single window environment, one or more ofthe functionalities have user-engagable indicia associated with themthat enables a user to view quick links that pertain to a functionalitythat is different from a functionality in which they happen to beworking. Advantageously, the user is able to view the quick linkswithout having to change their current context. For example, in thedocument-centric example described in FIGS. 5 and 6, a user can viewquick links associated with upcoming appointments in their calendarfunctionality while browsing the web with their browser functionality.When they view the links to the appointments, their context remainswithin the browser functionality. If the user chooses, they may click ona particular quick link to an appointment which then changes theircontext and navigates the single navigable window to a document thatdisplays more information about the appointment.

Navigation Model

In the embodiment described directly above, a navigation model isutilized to manage a user's navigation activities within the singleapplication that provides the multiple different functionalities.Although any suitable navigation model (as will be understood by thoseof skill in the art) can be used, in the described embodiment aso-called “back-and-truncate” navigation stack is used. The basicconcept of a back-and-truncate model is known and forms the basis formany different web browsers on the market today. Essentially, theback-and-truncate model makes use of a navigation stack that istruncated when the user navigates back n times and then forward to a newdocument. An explanation of the navigation model that is employed in thepresent example is given is the U.S. patent application entitled “SingleWindow Navigation Methods and Systems”, incorporated by reference above.

Exemplary Algorithms

In one embodiment, various inventive algorithms are employed to ensurethat the quick links that are displayed for the user are intelligentlyselected for display. Many of the algorithms use dynamically changinginformation as a basis for ascertaining what quick links to display forthe user. Dynamically changing information can include such things asincoming information (e.g. information that is received by the user'scomputer) and information concerning future activities or events (e.g.calendar appointments). The dynamically changing information isprocessed by various algorithms to provide the quick links that can beselected for display for the user.

As an example, consider the document-centric single navigable windowexample above. In that example, the different functionalities include aplanner functionality and an email functionality. The plannerfunctionality typically employs information that can be considered asinformation concerning future activities or events. The emailfunctionality employs information that can be considered as incominginformation. The inventive algorithms take into account the nature ofthis information and attempt to provide an intelligently arrangedcollection of quick links for the user. Additionally, at least some ofthe inventive algorithms are employable across different content types.That is, some of the algorithms can provide quick links to differentcontent types. An example of this is given in the “Recent Items List”section below.

The algorithms described below help to determine a set of quick links toprovide for users. The inventive algorithms can work in multipledifferent ways. For example, the algorithms can work: As a filter orunion of filters on a stored collection or collections of data (e.g. acollection of mail messages or web page favorites); or As data trackedin memory about a current application session, usually across multipletypes of data (e.g. web pages, calendar appointments, and emailmessages, for example)

Multiple Selectable Algorithms

In one implementation, a user is presented, via a UI, with multiplealgorithms from which they can select to have quick links displayed. Thedifferent algorithms can display different collections of quick linksdepending on the specifics of the algorithm selected by the user.Advantageously, the multiple 1 selectable algorithms can be employed inconnection with the single navigable window application described above.Hence, the different selectable algorithms can be employed acrossdifferent content types.

Consider for example FIG. 8 which shows an exemplary user interface 800designated as “Favorites”. Interface 800 corresponds to the “Favorites”context block 412 of FIG. 5. Interface 800 includes multiple differentalgorithms that can be selected by a user. When a user selects aparticular algorithm, they are presented with a display of quick linksthat are provided by that specific selected algorithm. In theillustrated example, four exemplary algorithms are shown: a “TopFavorites” algorithm 802, a “Suggested Favorites” algorithm 804, a“Recently Added Favorites” algorithm 806, a “Places Visited Today”algorithm 808, and a “Recent Items” algorithm 810. The “Top Favorites”,“Suggested Favorites”, and “Recent Items List” algorithms are discussedin specific sections below in more detail. It will be appreciated thatthe listed algorithms can be provided in any suitable way, e.g. in theillustrated UI or in drop down menus similar to the other quick links.

In the single navigable window implementation where a user's context iscapable of changing from functionality to functionality, it is importantto note that some of the different selectable algorithms, when selectedby a user, provide quick links that are particular to the user's presentcontext. That is, as the user's context changes from functionality tofunctionality, so too do the collection of quick links that are providedby some of the algorithms. For example, if a user is working in theiremail functionality, then by selecting “Top Favorites”, they can see alist of their top favorite email messages. In the present example, theirfavorite email messages can be displayed directly under interface 800 ina display 812. If a user navigates to the web browser functionality andselects the “Top Favorites” algorithm, they can see a list of their topfavorite web sites. Thus, the algorithms are capable of being employedin connection with and across different content types (e.g. emailmessages and web pages).

FIG. 9 is a flow diagram that describes steps in a method in accordancewith this described embodiment. The illustrated method can beimplemented in any suitable hardware, software, firmware, or combinationthereof. In the illustrated example, the method is implemented insoftware.

Step 900 provides multiple different algorithms for displaying quicklinks. The algorithms that are provided can be any suitable algorithms.Advantageously, some if not all of the algorithms are designed to beemployed in connection with and across different content types. Inaddition, some of the algorithms can display quick links to differentcontent types, as will become apparent below in the “Recent Items List”section. Step 902 displays the multiple different algorithms forselection by a user. The algorithms can be displayed in response to theuser actively pulling them up, or they can be displayed automaticallywhen the user's context indicates that the algorithms might be useful tothe user. Step 904 ascertains whether the user has selected analgorithm. A user can select an algorithm by simply clicking on theappropriate algorithm. If the user has not selected an algorithm, themethod can branch back to step 902. Alternately, the method can removethe display of algorithms. If the user selects an algorithm, then step906 displays quick links that are provided by the algorithm. The quicklinks can include links that are within the user's present context aswell as links that are not within the user's present context.

Top Favorites

The inventive Top Favorites algorithm embodiments enable a user to seequick links that are associated with items on a favorites list that havebeen visited most often by the user as well as items that have mostrecently been added by the user to a favorites list. To determine whichitems have been visited “most” often by a user, any suitable metrics canbe used. For example, one metric might look at a one-week or a one-monthtime period and set a predetermined threshold at ten. In this example,an item that is visited more than ten times in the defined time periodwould be considered as being an item that is visited most often.Similarly, to determine which items have been “most” recently added, anysuitable metrics can be used, e.g. added within the past 2 or 3 days.This algorithm recognizes that items of particular interest to a usercan include not only those items that a user visits frequently, butitems that they recently added to their favorites list as well.

The Top Favorites algorithm can be implemented as follows. A databasemaintains “favorite” entries in which a user has indicated an interest.The database can be maintained in a permanent store. FIG. 10 shows anumber of different exemplary database entries at 1000 that form aportion of such a database. The database entries include a link field1002 that holds the information describing the link. Here, suchinformation comprises the link's URL. There are also one or more fields1004 for maintaining information regarding how frequently a useraccesses a particular link. In this example, four exemplary fields areprovided—each corresponding to a one-week time period. The “1 Wk” fieldcan hold a value associated with a user's access frequency during thepreceding week; the “2 Wk” field can hold a value associated with auser's access frequency two weeks ago, and so on. Additionally, a “DateAdded” field 1006 includes the date when the user added the link totheir favorites list.

In this example, database entries are ranked according to how frequentlya user has accessed them. More frequently accessed links are rankedhigher than less frequently accessed links. One way of ranking links isto calculate a score for each link that counts the number of times auser has accessed a link, weighting the more recent accesses heavierthan the less recent accesses. Each score is then ordered in terms ofhighest to lowest to provide a ranked list of popular favorites withmore popular links appearing toward the top of the list and less popularlinks appearing toward the bottom of the list or not appear on the listat all. Individual links can now be identified based upon how popularthey are as measured by the user's access frequency. Next, the mostrecently added entries are ascertained in accordance with definableparameters. For example, a search query might specify that entries addedwithin the last two weeks are to be identified. This provides a list ofmost recently added favorites. This list, and the links from the list ofpopular favorites are then combined to provide a collection of favoritesthat includes not only the most popular links (as determined by theuser's access frequency), but the most recently added links as well. Thelatter portion of the list ensures that links that are of currentinterest to the user populate the “Top Favorites” list.

FIG. 11 is a flow diagram that describes steps in a method in accordancewith this embodiment. This method can be implemented in any suitablehardware, software, firmware, or combination thereof. In the presentexample, the method is implemented in software. Step 1100 maintains adatabase containing information 11 describing various user favorites.This information can include links to the favorites (such as URLs andthe like), as well as information that describes the user's accessfrequency and when the favorite was added by the user to their favoriteslist. Exemplary database entries are shown-in FIG. 10. Step 1102 runs afirst database query that identifies and ranks the most frequentlyaccessed user favorites. Step 1104 runs a second database query thatidentifies the most recently added favorites. Step 1106 then calculatesa union of the first and second queries to provide a user's “TopFavorites” list.

Suggested Favorites

In another embodiment, a “Suggested Favorites” algorithm enables a userto see links that are associated with items that have been visited mostoften by the user as well as items that have visited most recently bythe user. This algorithm is similar to the “Top Favorites” algorithm,except that instead of running a database query that identifies the mostfrequently and recently visited favorites (step 1104), a database queryis run that identifies the most recently browsed items. Thus, thisalgorithm recognizes that items of particular interest to a user caninclude not only those items that a user adds to a manual list andvisits frequently, but also items that they most recently visited orvisit often and do not add to this list. To determine which items havebeen most recently visited, any suitable metric can be used, e.g.visited within the past 2 or 3 days.

In an exemplary implementation, a “Date Last Accessed” field 1008 (FIG.10) can be included in the database 1000. Entries in this field includethe dates when a user last accessed a particular item.

FIG. 12 is a flow diagram that describes steps in a method in accordancewith this described embodiment. This method can be implemented in anysuitable hardware, software, firmware, or combination thereof. In thepresent example, the method is implemented in software. Step 1200maintains a database containing information describing various visitedpages. This information can include links to the pages (such as URLs andthe like), as well as information that describes the user's accessfrequency and when the page was last accessed by the user. Exemplarydatabase entries are shown in FIG. 10. Step 1202 runs a first databasequery that identifies and ranks the most frequently accessed user pages.Step 1204 runs a second database query that identifies the most recentlyaccessed pages. Step 1206 then calculates a union of the first andsecond queries to provide a user's “Suggested Favorites” list.

Recent Items List

In one embodiment, a “Recent Items List” is provided for a user. Thisembodiment is particularly useful in the context of the single windowapplication program that provides multiple different functionalities.Recall that each of the different functionalities can have differentassociated content types, e.g. email messages, calendaring items,contacts, web pages, etc. The “Recent Items List” tracks, in memory,information pertaining to one or more of the last document of aparticular content type that the user visited. Advantageously, theapplication program can store a link to the most recently browseddocument of every content type that the application supports. Forexample, if an application contains email, calendaring, browsing, andcontact functionalities, the “Recent Items List” can contain links toeach of the most recently accessed documents of the particular contenttypes. This can be extended to include more items in each list or other11 kinds of extended content: as new functionalities are added to theapplication, the list could expand to include those types as well. Inaddition, this algorithm can be extendible to incorporate newly createddocument types. For example, if a user adds an extension that provides anew document type, this algorithm can ensure that documents of thenewly-created document type are included in the “Recent Items List.”

Consider, for example, FIG. 13 which shows an exemplary “Recent ItemsList” 1300 that can be maintained in memory. In this example, the listcontains five entries, one for each content type that is supported bythe application. Each of the entries is a link that is associated withthe most recently viewed document of a particular content type. Forexample, content type 1 might be a link to the last email message thatwas read, content type 2 might be a link to the last calendaring itemthat was browsed, content type 3 might be a link to the last web pagethat was browsed, etc.

One particularly useful implementation of the “Recent Items List” occursin connection with the “back” navigation button drop down menu.Specifically, the navigation bar 408 (see FIGS. 5 and 6) includes a“back” navigation button in the form of a leftward-facing arrow. Thisnavigation button includes a drop down menu that can be accessed byclicking on user-engagable indicia 411 located adjacent the button. Thedrop down menu might list the last three or four items that were mostrecently encountered by the user. Links to these items are managed inthe navigation stack mentioned above. There may be times, however, whena user wishes to access a document on which they previously worked whichis not listed in the back drop down menu. For example, consider thefollowing: Assume that a user is browsing through variousfunctionalities and visits an email message from a friend. The emailmessage includes a link that the user follows to a web page. Assumefurther that the web page includes a 12 page article that the userclicks through. If a user wishes to return to their friend's emailmessage, then they can click the “back” navigation button 12 times tonavigate back through the 12 pages to get to the email message.Alternately, the user can click the “back” drop down menu to see thelast three or four items that they browsed. Accordingly, the user wouldhave to click this drop down menu multiple times.

In the described embodiment, the “back” drop down menu supports a“Recent Items List” which contains links to the most recently browseditems of the different content types if they do not appear in the backdrop down menu. In the document-centric example above, the “Recent ItemsList” would contain links to the last mail message, last calendar item,last contact, and last document that the user visited, if those items donot appear in the back drop down menu.

FIG. 14 shows an exemplary “back” drop down list 1400 that containslinks to three most recently accessed items, as well as a “Recent ItemsList” that can be clicked on by a user. In the above example where theuser has browsed a 12-page document, they would not see a link to theirfriend's email message in the navigation stack when they pulled down thedrop down menu. They would, however, see a link to the email message inthe “Recent Items List” because their friend's email message was thelast email message type that was browsed or viewed by the user.

CONCLUSION

The methods and systems described above provide users with a much moreuser-centric computing experience that is tailored to particular users.The methods and systems provide this user-centric experience whileconveniently enabling user participation without requiring the user tochange their computing context. Multiple different functionalities canbe provided that enable a user to accomplish multiple different tasks.Hence, while a user accomplishes a task associated with onefunctionality, they can view quick links associated with otherfunctionalities without having to change their present computingcontext.

Although the invention has been described in language specific tostructural features and/or methodological steps, it is to be understoodthat the invention defined in the appended claims is not necessarilylimited to the specific features or steps described. Rather, thespecific features and steps are disclosed as preferred forms ofimplementing the claimed invention.

1. One or more computer storage media having stored thereoncomputer-executable instructions that, when executed by one or morecomputing devices, cause the computing devices to perform a method ofproviding a collection of quick links, the method comprising:determining a first list of links, the list being based upon the recencyand frequency with which a first user accesses items associated with thelinks; determining a second list of links that is based upon whenparticular links were added in association with the first user; andcalculating a union of the first and second lists to provide acollection of quick links in association with the first user, whereinthe acts of determining the first and second lists are performed byusing dynamically changing information associated with the first user'sactivities as a basis for ascertaining the collection of quick links,said activities including the recency and frequency with which the firstuser accesses items associated with the links and when particular linkswere added in association with the first user, and wherein said union ofthe lists changes in accordance with the dynamically changinginformation.
 2. The computer storage medium of claim 1, whereindetermining a first list of links includes calculating a score for eachlink that considers the number of times the first user has accessed anitem associated with the link.
 3. The computer storage medium of claim2, wherein calculating the score for each link includes weighting morerecent link accesses heavier than less recent link accesses.
 4. Thecomputer storage medium of claim 1, wherein the union of the first andsecond lists is calculated across multiple content types.
 5. Thecomputer storage medium of claim 1, wherein determining the first listof links includes applying a first filter and determining the secondlists of links includes applying a second filter.
 6. The computerstorage medium of claim 1, wherein the particular links were added inassociation with a first user based on one or more selections by thefirst user.
 7. A system for ascertaining quick links to user informationsystem that includes a processor coupled to computer storage media, thesystem comprising: a first filter component for ranking links associatedwith a first user, which ranks one or more of the links based upon therecency and frequency with which the first user has accessed itemsassociated with the links; a second filter component for ranking thelinks, which ranks one or more of the links based upon when the linkswere added in association with the first user; and a presentingcomponent for presenting a collection of quick links associated with thefirst user, wherein the collection of quick links is based on the firstand second filter components using dynamically changing informationassociated with the first user's activities, said activities includingthe recency and frequency with which the first user accesses itemsassociated with the links and when particular links were added inassociation with the first user, and wherein the collection of quicklinks changes in accordance with the dynamically changing information.8. The system of claim 7, wherein the first filter component considersthe number of times the first user has accessed an item associated withone or more links.
 9. The system of claim 8, wherein the first filtercomponent weighs more recent link accesses heavier than less recent linkaccesses.
 10. The system of claim 7, wherein the collection of quicklinks includes multiple content types.
 11. The system of claim 7,wherein at least one of the links is associated with a favorite page ofthe first user.
 12. The system of claim 7, wherein the links areassociated with a first user based on selections by the first user. 13.One or more computer storage media having stored thereoncomputer-executable instructions that, when executed by a computingdevice having one or more processors, configure the one or moreprocessors to provide a browsing interface, the interface comprising: afirst order of a collection of quick links in association with a firstuser, wherein the quick links in the first collection are sorted intothe first order based on the recency with which the first user hasaccessed one or more items associated with the quick links; and a secondorder of the collection of quick links in association with the firstuser, wherein the first user selects to navigate from the first order tothe second order, and wherein the quick links in the second collectionare sorted into the second order based on (1) the recency with which thefirst user has accessed one or more items associated with the quicklinks, (2) a frequency with which the first user accesses itemsassociated with the quick links, and (3) when the quick links were addedin association with the first user.
 14. The computer storage medium ofclaim 13, wherein the collection of quick links includes a score foreach quick link that represents the number of times the first user hasaccessed an item associated with the quick link.
 15. The computerstorage medium of claim 14, wherein the score for each quick linkincludes a weighting for more recent quick link accesses relative toless recent quick link accesses.
 16. The computer storage medium ofclaim 13, wherein the collection of quick links is calculated acrossmultiple content types.
 17. The computer storage medium of claim 16,wherein the collection of quick links include quick links associatedwith word processing documents.
 18. The computer storage medium of claim17, wherein the collection of quick links include quick links associatedwith web page documents.
 19. The computer storage medium of claim 13,wherein the quick links in the collection of quick links were added inassociation with a first user based on one or more selections made bythe first user.
 20. The computer storage medium of claim 13, wherein theone or more processors applies a union of filters to provide the secondorder of the collection of quick links.